A wide variety of multimedia devices is incorporating the ability to receive and process picture data. Multimedia devices that use picture data generally need to encode and decode the data in order to transmit and receive the encoded data across various transmission mediums. Picture data is generally displayed as a set of pixels to fill the display screen. Processing of the overall set of pixels is performed on a block-by-block basis, with each block often referred to as a macroblock.
Depending upon the complexity of hardware desired, a wide variety of transformation techniques can be used in association with processing the data block for display on a device. One commonly used video transform technique includes the use of an inverse discrete cosine transform (IDCT). In general, MPEG 2 uses only IDCT. MPEG4 uses the same transform as MPEG2 (i.e., DCT, IDCT) for video texture, except that MPEG4 uses “Discrete Wavelet Transform” for still texture. Still other standards (i.e., H.26L, and proprietary formats) might use different transformation techniques, such as a linear transformation, or the like.
FIG. 1A shows an example block diagram 100 of certain elements of a transmitter and receiver device that uses this transformation technique. The transmitter 102 first shows the pixel block 104 upon which these operations will be performed. This pixel data enters a discrete cosine transform (DCT) 106. The DCT converts a block of data from the spatial domain to the frequency domain, so that it can be processed more readily.
FIG. 1B shows an example of the frequency domain for a set of data being plotted versus the spatial frequency for a two-dimensional (2D) video array. FIG. 1C shows a representative set of such pixels, wherein the variation of information between each pixel indicates the spatial frequency. The curve in FIG. 1B indicates that, in general, pixels in a given area do not tend to have a great amount of variation between them. Therefore the frequency domain is shown to have a higher concentration for lower spatial frequencies. In light of this representative tendency of the pixel data, one technique that is commonly employed is to discard the higher spatial frequency data above a certain level, as shown by the shaded area 150. By discarding this upper frequency data, a lower bit rate on the transform coefficients can be achieved.
Referring again to FIG. 1A, a scan pattern is thereafter applied to the converted data in block 108. This block 108 is also shown to include and perform the quantizer operation on the data. Once quantized, the data is processed by a variable length coder (VLC) 112 (or the like) into a bit pattern for transmission.
On the receiving end, the receiver 120 is shown to include counterpart elements to the transmitter. A variable length decoder (VLD) 122 (or the like) receives the coded bitstream and provides a decoded bitstream. An inverse scan pattern and inverse quantizer are applied in block 124. An inverse discrete cosine transform (IDCT) 128 is thereafter applied to transform the data from the frequency domain back to the spatial (or time) domain. This transformation provides the resulting pixel block data 130 for use by a display device.
FIG. 2 shows another representative block diagram 200, wherein the IDCT is incorporated as part of the overall decoder. A generalized decoder block 202 is shown receiving a coded signal 204. A variable length decoder 206 (or the like) receives this coded signal and provides a variable length decoded signal. An IQ block 207 is thereafter applied to the output of the VLD to provide inverse quantization. An IDCT 208 is thereafter applied to the output of the IQ block to provide inverse transform information. The transformed information is then used by certain frame reconstruction operations, shown generally as block 210. A decoded signal 212 results and can be used by a display device to show the picture data.
Many different types of data signals might need to be processed, and each might require a different transform operation. For instance, MPEG2 (and MPEG4) video data will generally require a different set of transform operations (and transform coefficients) than H26L, or other coding formats. As a result, a video decoder that is capable of handling different coding formats will generally require different implementations of the IDCT to handle each format. FIG. 3 shows a representative prior art example 300 of a multi-transform implementation. In this example, the transform data 302 is evaluated in block 304 that is used to detect the data type. Depending upon the number of coding schemes accommodated, a different IDCT is provided for each data type. A switching network 305 can used to select the IDCT and might consist of hardware and/or software switching devices. IDCT 1 (306) is used to provide inverse transform data 1 (307). IDCT 2 (308) is used to provide inverse transform data 2 (309). The IDCT devices continue through IDCT n (310), which is used to provide inverse transform data n (311).
One problem with this type of prior art implementation is the need for multiple implementations of the IDCT. Given the requirement for speed in processing many video applications, this transformation block is often implemented as a separate hardware component for each type of transform needed. While such dedicated hardware might provide more overall speed, the need for multiple implementations increases the overall hardware requirements. For microchip implementations, any increase in hardware can prove to be problematic, as the footprint of the microchip is limited. Additionally, the use of more hardware and switching elements will usually require more power to be consumed.
Instead, what is needed in the field is a generalized IDCT that can be used to process many different types of data. This generalized IDCT should require only a certain amount of hardware that can be used, in a programmable manner, to transform many different data standards. The programmable hardware might also be augmented using certain dedicated transformation hardware, as needed for different applications. The programmable transformation device should incorporate techniques that allow for the processing of different sized data blocks, according to the various standards.